package br.com.caelum.notasfiscais.dao;

import java.io.Serializable;
import java.util.List;

import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import javax.persistence.criteria.CriteriaQuery;

import br.com.caelum.notasfiscais.modelo.Produto;
import br.com.caelum.notasfiscais.modelo.Usuario;
import br.com.caelum.notasfiscais.util.JPAUtil;


public class UsuarioDao implements Serializable {

	@Inject
	private EntityManager manager;
	
	private static final long serialVersionUID = 1L;
	
	public boolean existe(Usuario usuario) {
		
		
		
		Query query = manager.createQuery("select u from Usuario u where u.login = :pLogin and u.senha = :pSenha")
						.setParameter("pLogin", usuario.getLogin())
						.setParameter("pSenha", usuario.getSenha());

		boolean encontrado = !query.getResultList().isEmpty();

		return encontrado;
	}
	
	public void adiciona(Usuario usuario) {
		
		manager.getTransaction().begin();
		manager.persist(usuario);
		manager.getTransaction().commit(); 
		manager.close();
	}
	
	public void atualiza(Usuario usuario) {
		EntityManager manager = new JPAUtil().getEntityManager();
		manager.getTransaction().begin();

		manager.merge(usuario);
		
		manager.getTransaction().commit();
		manager.close();
	}
	
	public List<Usuario> listaTodos() {
		EntityManager manager = new JPAUtil().getEntityManager();
		
		CriteriaQuery<Usuario> query = manager.getCriteriaBuilder().createQuery(Usuario.class);
		query.select(query.from(Usuario.class));

		List<Usuario> lista = manager.createQuery(query).getResultList();
//		List<Produto> lista = manager.createQuery("select p from Produto as p where p.id != null").getResultList();

		
		manager.close();
		
		return lista; 
	}



}